package com.itlong.cloud.property.service;

import com.itlong.cloud.POJO.DTO.property.PropertyCloudServiceCastMessagePageDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyCloudServiceCostSaveOrderDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyInvoiceInfoDTO;
import com.itlong.cloud.POJO.PO.PropertyCloudServiceCostOrderInfoPO;
import com.itlong.cloud.POJO.VO.app.AppPayParkFeeNoticeVO;
import com.itlong.cloud.POJO.VO.property.PropertyCloudServiceCostPaymentByPageVO;
import com.itlong.cloud.POJO.VO.property.PropertyCloudServiceCostRecordByPageVO;
import com.itlong.cloud.utils.page.Page;
import com.itlong.cloud.utils.page.PageByVisitor;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      云服务费支付暴露接口
 * </desc>
 *
 * @createDate 2019/8/12
 */
public interface IPropertyCloudServiceCostService {

    /**
     * <desc>
     *      获取云服务费的订单列表。
     * <desc/>
     *
     * @param  projectId 项目ID
     * @param  currentPage 当前页
     * @param  pageSize 页面大小
     * @param  feeStatus 查询条件 1待缴费 2全部
     * @return
     * @author Juguang.S
     * @createDate 2019-11-22
     */
    PageByVisitor<PropertyCloudServiceCostPaymentByPageVO> getOrderInfo(String projectId, String currentPage, String pageSize,String feeStatus,String orderId,String orderColumn,String orderRule) throws Exception;

    /**
     * <desc>
     *      修改线下银行支付订单
     * <desc/>
     *
     * @param  orderDTO 订单
     * @return
     * @author Juguang.S
     * @createDate 2019/8/12
     */
    String saveOrder(PropertyCloudServiceCostSaveOrderDTO orderDTO) throws Exception;

    /**
     * <desc>
     *      获取物业云服务费续费记录分页信息。
     * <desc/>
     *
     * @param  pageDTO 请求参数
     * @return
     * @author Juguang.S
     * @createDate 2019-08-12
     */
    Page<PropertyCloudServiceCostRecordByPageVO> getPaymentRecordByPage(PropertyCloudServiceCastMessagePageDTO pageDTO) throws Exception;

    /**
     * <desc>
     *      检测是否还有未支付的结下账单
     * <desc/>
     *
     * @param  projectId 项目编号
     * @return
     * @author Juguang.S
     * @createDate 2019/8/21
     */
    Integer getIsBankPayOrder(String projectId);

    /**
     * <desc>
     *      保存物业发票信息。
     * <desc/>
     *
     * @param  dto 物业发票信息
     * @return
     * @author Juguang.S
     * @createDate 2019-11-22
     */
    Integer addInvoiceInfo(PropertyInvoiceInfoDTO dto) throws Exception;

    /**
     * <desc>
     *      根据订单ID查询订单金额及支付状态
     * <desc/>
     *
     * @param  orderId 订单Id
     * @return
     * @author Juguang.S
     * @createDate 2019/11/25
     */
    PropertyCloudServiceCostOrderInfoPO getOrderAmount(String orderId);
}
